উদাহরণ সহ প্রাথমিক শেপ আঁকা

2D গ্রাফিক্স এবং প্রাথমিক শেপ আঁকা - জোগল (JOGL) - Java Technologies

359

JOGL (Java OpenGL) হল Java এর জন্য একটি OpenGL বাইন্ডিং যা 2D এবং 3D গ্রাফিক্স রেন্ডারিং করতে ব্যবহৃত হয়। JOGL ব্যবহার করে, আপনি সহজেই 2D এবং 3D শেপ আঁকতে পারেন, যেমন লক্ষ্য, বর্গক্ষেত্র, ত্রিভুজ ইত্যাদি। এই গাইডে, আমরা JOGL ব্যবহার করে কিভাবে প্রাথমিক শেপ (যেমন ত্রিভুজ, বর্গক্ষেত্র, এবং লাইন) আঁকতে হয় তা দেখাব।


JOGL দিয়ে প্রাথমিক শেপ আঁকার জন্য সেটআপ


1. JOGL লাইব্রেরি যুক্ত করা

প্রথমেই JOGL লাইব্রেরি আপনার প্রজেক্টে যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:

<dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl-all</artifactId>
    <version>2.3.2</version>
</dependency>

এছাড়া, আপনি Gradle বা Manually JOGL JAR ফাইলও যুক্ত করতে পারেন।


2. JOGL দিয়ে প্রাথমিক শেপ আঁকার উদাহরণ

এই উদাহরণে, আমরা JOGL ব্যবহার করে একটি জাভা প্রোগ্রাম তৈরি করব যেখানে একটি ত্রিভুজ (Triangle) এবং বর্গক্ষেত্র (Square) আঁকা হবে।

JOGL 3D Shape Drawing Example

import com.jogamp.opengl.*;
import com.jogamp.opengl.awt.GLCanvas;
import javax.swing.*;

public class BasicShapesJOGL implements GLEventListener {

    @Override
    public void init(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();
        gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);  // Black background
        gl.glEnable(GL.GL_DEPTH_TEST);  // Enable depth test for 3D rendering
    }

    @Override
    public void dispose(GLAutoDrawable drawable) {
        // Clean up if needed
    }

    @Override
    public void display(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);

        gl.glLoadIdentity();
        gl.glTranslatef(0.0f, 0.0f, -6.0f);  // Move the shape back a little

        // Draw a triangle
        gl.glBegin(GL.GL_TRIANGLES); 
        gl.glColor3f(1.0f, 0.0f, 0.0f);  // Red color
        gl.glVertex3f(0.0f, 1.0f, 0.0f);  // Top point of the triangle

        gl.glColor3f(0.0f, 1.0f, 0.0f);  // Green color
        gl.glVertex3f(-1.0f, -1.0f, 0.0f);  // Left point of the triangle

        gl.glColor3f(0.0f, 0.0f, 1.0f);  // Blue color
        gl.glVertex3f(1.0f, -1.0f, 0.0f);  // Right point of the triangle
        gl.glEnd();

        // Draw a square
        gl.glLoadIdentity();  // Reset transformations
        gl.glTranslatef(2.5f, 0.0f, -6.0f);  // Move the square to the right side
        gl.glBegin(GL.GL_QUADS); 
        gl.glColor3f(1.0f, 1.0f, 0.0f);  // Yellow color
        gl.glVertex3f(-1.0f, 1.0f, 0.0f);  // Top-left corner
        gl.glVertex3f(1.0f, 1.0f, 0.0f);  // Top-right corner
        gl.glVertex3f(1.0f, -1.0f, 0.0f);  // Bottom-right corner
        gl.glVertex3f(-1.0f, -1.0f, 0.0f);  // Bottom-left corner
        gl.glEnd();
    }

    @Override
    public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
        GL gl = drawable.getGL();
        gl.glViewport(0, 0, width, height);  // Adjust the viewport size
        gl.glMatrixMode(GL.GL_PROJECTION);  // Set the projection matrix
        gl.glLoadIdentity();
        glu.gluPerspective(45.0f, (float) width / height, 0.1f, 100.0f);
        gl.glMatrixMode(GL.GL_MODELVIEW);  // Return to model view matrix
    }

    public static void main(String[] args) {
        // Create a frame for the JOGL canvas
        JFrame frame = new JFrame("Basic JOGL Example");
        GLCanvas canvas = new GLCanvas();
        canvas.addGLEventListener(new BasicShapesJOGL());
        frame.getContentPane().add(canvas);
        frame.setSize(640, 480);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

        canvas.requestFocus();
    }
}

ব্যাখ্যা:

  1. init(): এটি OpenGL কনফিগারেশনের জন্য ব্যবহৃত হয়। এখানে ব্যাকগ্রাউন্ড কালার কালো করা হয়েছে এবং Depth Test চালু করা হয়েছে (3D rendering এর জন্য প্রয়োজনীয়)।
  2. display(): এখানে গ্রাফিক্স রেন্ডারিং করা হচ্ছে। প্রথমে একটি ত্রিভুজ আঁকা হয়েছে এবং তারপর একটি বর্গক্ষেত্র আঁকা হয়েছে। প্রত্যেকটি শেপের জন্য glBegin() এবং glEnd() ব্যবহার করা হয়েছে, যা OpenGL তে শেপ আঁকার জন্য ব্যবহৃত হয়।
    • ত্রিভুজের পয়েন্টগুলি glVertex3f() এর মাধ্যমে নির্ধারিত হয়েছে, এবং glColor3f() এর মাধ্যমে প্রতিটি পয়েন্টের জন্য আলাদা রঙ ব্যবহার করা হয়েছে।
    • বর্গক্ষেত্রের জন্য GL_QUADS ব্যবহার করা হয়েছে, যা 4টি কোণ বিশিষ্ট শেপ আঁকতে ব্যবহৃত হয়।
  3. reshape(): এই মেথডটি গ্রাফিক্স ক্যানভাসের সাইজ পরিবর্তন হলে কাজ করে। এটি gluPerspective() ব্যবহার করে দৃশ্যের এলাকা কনফিগার করে।

3D শেপ রেন্ডারিং

JOGL ব্যবহার করে আপনি অন্যান্য 3D শেপ যেমন কিউব, সিলিন্ডার, স্পিরাল ইত্যাদি আঁকতে পারেন। ওপেনজিএল-এর সাহায্যে glBegin(), glVertex() এবং glEnd() এর মধ্যে আপনার 3D গ্রাফিক্স কৌশল তৈরি করতে পারবেন।


4. JOGL ক্যানভাস এবং JFrame ব্যবহার

আপনি GLCanvas এর মাধ্যমে OpenGL এর শেপ তৈরি করবেন এবং JFrame ব্যবহার করে একটি উইন্ডোতে শো করবেন। GLCanvas হল OpenGL ক্যানভাস যেখানে গ্রাফিক্স রেন্ডারিং করা হয়। JFrame হল Java GUI উইন্ডো যা ক্যানভাসটি ধারণ করে।


Conclusion


JOGL (Java OpenGL) এর মাধ্যমে আপনি Java অ্যাপ্লিকেশনগুলিতে 2D এবং 3D গ্রাফিক্স তৈরি করতে পারেন। এই গাইডে আমরা দেখলাম কিভাবে JOGL ব্যবহার করে প্রাথমিক শেপ (ত্রিভুজ, বর্গক্ষেত্র) আঁকা যায়। আপনি আরও জটিল গ্রাফিক্স এবং 3D মডেল তৈরি করতে OpenGL এর বিভিন্ন ফিচার ব্যবহার করতে পারেন, যেমন Texturing, Shading, Lighting ইত্যাদি। JOGL আপনাকে OpenGL এর শক্তিশালী গ্রাফিক্স রেন্ডারিং ক্ষমতা Java অ্যাপ্লিকেশনগুলিতে ব্যবহারের সুযোগ দেয়।

Content added By
Promotion

Are you sure to start over?

Loading...